<?php
class Administrator_ArticleController extends QSource_System_Controller_Action{
	public function init(){
		$this->loadTemplate('administrator');
	}
	public function indexAction(){ 
	    $model = new Model_Article_Article();
	    $data = $model->getAll();
	    Zend_View_Helper_PaginationControl::setDefaultViewPartial(APPLICATION_PATH.'\modules\administrator\views\pagination.phtml');
	    $pa = Zend_Paginator::factory($data);
	    $pa->setItemCountPerPage(10);
	    $current = $this->_request->getParam('page');
	    $this->view->page = $current;
	    $pa->setCurrentPageNumber($current);
	    $this->view->data = $pa;
	}	
	public function addAction(){ 
	    $model = new Model_Article_Article();
	    if ($this->_request->isPost()) {
	    	$error = array();
	    	//Lấy thông tin của form post
	    	$data = $this->_request->getParams();
	    	if ($data['name'] == '')
	    		$error['name'] = 'Tiêu đề không được rỗng';
	    	if($data['alias']!='')
	    	{
	    		if($model->checkAlias($data['alias']))
	    			$error['alias'] = 'Đã tồn tại alias này';
	    	}
	    	if($data['summary'] == '')
	    	    $error['summary'] = 'Nội dung không được rỗng';
	    	// Kiểm tra và upload hình ảnh
	    	$image = '';
	    	//Xử lý hình ảnh
	    	$imageUpload = new Zend_File_Transfer_Adapter_Http();
	    	$imageUpload->setDestination(
	    			realpath(APPLICATION_PATH . '/../public/images/articles'));
	    	//Set Image Validator
	    	$imageUpload->addValidator('Size', false,
	    			array('min' => 2000, 'max' => 2097152));
	    	$imageUpload->addValidator('Extension', false,
	    			array('jpg', 'png', 'gif', 'jpeg'));
	    	$imageInfo = $imageUpload->getFileInfo();
	    	foreach ($imageInfo as $file => $fileinfo) {
	    		if (($imageUpload->isUploaded($fileinfo['name'])) &&
	    				($imageUpload->isValid($fileinfo['name'])))
	    			if (! $imageUpload->receive($fileinfo['name'])) {
	    			$error['image'] = $imageUpload->getMessages();
	    		} else {
	    			$image = $fileinfo['name'];
	    			//Tạo thumbs image
	    			$thumbs = new QSource_Image_Image();
	    			$resize = $thumbs->resize('./public/images/articles/'.$image);
	    			$resize->resizeImage(315, 180, 'auto');
	    			$resize->saveImage('./public/images/articles/thumbs/'.$image, 100);  
	    		}
	    	}
	    	//Kiểm tra lỗi - nếu có thì hiển thị lỗi - còn không save Webmaster lại
	    	if (count($error) > 0) {
	    		$this->view->error = $error;
	    		$this->view->data = $data;
	    	} else {
	    	    $toAlias = new QSource_System_Helper_String();
	    		if($data['alias']=='')
	    		{
	    			$data['alias'] = $toAlias->vn_str_filter($data['name']);
	    		}
	    		else
	    		{
	    		    $data['alias'] = $toAlias->vn_str_filter($data['alias']);
	    		}
	    		$date_cre= date('Y-m-d H:i:s',time());
	    		$date_mod= date('Y-m-d H:i:s',time());
	    		$user_cre = $this->user->id;
	    		$user_mod = $this->user->id;
	    		$item = array('name'=>$data['name'],'summary'=>$data['summary'],'date_cre'=>$date_cre,'date_mod'=>$date_mod,'user_cre'=>$user_cre,'user_mod'=>$user_mod,'description'=>$data['description'],'alias'=>$data['alias'],'image'=>$image,'language'=>1,'status'=>$data['status'],'web_keyword'=>$data['web_keyword'],'web_description'=>$data['web_description'],'category'=>$data['category']);
	    		$model->insert($item);
	    		$this->view->success = 'Đã thêm thể loại mới thành công';
	    	}
	    }
	}
	public function editAction(){ 
	    $id = $this->_request->getParam('id', '');
	    if ($id == '')
	    	$this->_redirect('/administrator/article');
		    $model = new Model_Article_Article();
		    if ($this->_request->isPost()) {
		    	$error = array();
		    	//Lấy thông tin của form post
		    	$data = $this->_request->getParams();
		    	if ($data['name'] == '')
		    		$error['name'] = ' Tên thể loại không được rỗng';
		    	if($data['alias']!='')
		    	{
		    		if($model->checkAliasExceptId($id,$data['alias']))
		    			$error['alias'] = 'Đã tồn tại alias này';
		    	}
		    	if($data['summary'] == '')
		    	    $error['summary'] = 'Nội dung không được rỗng';
		    	// Kiểm tra và upload hình ảnh
		    	$image = '';
		    	//Xử lý hình ảnh
		    	$imageUpload = new Zend_File_Transfer_Adapter_Http();
		    	$imageUpload->setDestination(
		    			realpath(APPLICATION_PATH . '/../public/images/articles'));
		    	//Set Image Validator
		    	$imageUpload->addValidator('Size', false,
		    			array('min' => 2000, 'max' => 2097152));
		    	$imageUpload->addValidator('Extension', false,
		    			array('jpg', 'png', 'gif', 'jpeg'));
		    	$imageInfo = $imageUpload->getFileInfo();
		    	foreach ($imageInfo as $file => $fileinfo) {
		    		if (($imageUpload->isUploaded($fileinfo['name'])) &&
		    				($imageUpload->isValid($fileinfo['name'])))
		    			if (! $imageUpload->receive($fileinfo['name'])) {
		    			$error['image'] = $imageUpload->getMessages();
		    		} else {
		    			$image = $fileinfo['name'];
		    		}
		    	}
	    		//Kiểm tra lỗi - nếu có thì hiển thị lỗi - còn không save lại
	    		if (count($error) > 0) {
	    			$this->view->error = $error;
	    			//Fix lỗi hiển thị ảnh sai khi validate báo lỗi
	    			$item = $model->getItemId($id);
	    			$data['image'] = $item['image'];
	    			$this->view->data = $data;
	    		} else {
	    			$date_mod = date('Y-m-d H:i:s', time());
	    			$toAlias = new QSource_System_Helper_String();
	    			if($data['alias']=='')
		    		{
		    			$data['alias'] = $toAlias->vn_str_filter($data['name']);
		    		}
		    		else
		    		{
		    		    $data['alias'] = $toAlias->vn_str_filter($data['alias']);
		    		}
		    		$date_mod= date('Y-m-d H:i:s',time());
		    		$user_mod = $this->user->id;
		    		if($image!='')
		    			$item = array('name'=>$data['name'],'summary'=>$data['summary'],'date_mod'=>$date_mod,'user_mod'=>$user_mod,'description'=>$data['description'],'alias'=>$data['alias'],'image'=>$image,'language'=>1,'status'=>$data['status'],'web_keyword'=>$data['web_keyword'],'web_description'=>$data['web_description'],'category'=>$data['category']);
		    		else
		    		    $item = array('name'=>$data['name'],'summary'=>$data['summary'],'date_mod'=>$date_mod,'user_mod'=>$user_mod,'description'=>$data['description'],'alias'=>$data['alias'],'language'=>1,'status'=>$data['status'],'web_keyword'=>$data['web_keyword'],'web_description'=>$data['web_description'],'category'=>$data['category']);
		    		$model->update($item,'id = '.$id);
	    			$this->_redirect('/administrator/article');
	    	}
	    } else {
	    	$data = $model->getItemId($id);
	    	$this->view->data = $data;
	    }
	}
	public function searchAction(){
		$keyword = $this->_request->getParam('keyword','');
		if($keyword == '')
			$this->_redirect('/administrator/article');
		$model = new Model_Article_Article();
		$data = $model->getAllStartWith($keyword);
		Zend_View_Helper_PaginationControl::setDefaultViewPartial(
		APPLICATION_PATH . '\modules\administrator\views\pagination.phtml');
		$pa = Zend_Paginator::factory($data);
		$pa->setItemCountPerPage(10);
		$current = $this->_request->getParam('page');
		$this->view->page = $current;
		$pa->setCurrentPageNumber($current);
		$this->view->data = $pa;
		$this->renderScript('article/index.phtml');
	}
	 
	//Data Email Json - Data autocomplete for jqueryui
	public function datanamejsonAction(){
		$model = new Model_Article_Article();
		$term = $this->_request->getParam('term','');
		if($term=='')
			$data = $model->getAll();
		else
			$data = $model->getAllStartWith($term);
		$this->view->data = $data;
		$this->_helper->layout->disableLayout();
	}
	
	public function removeAction ()
	{
		Zend_Layout::resetMvcInstance();
		$this->_helper->viewRenderer->setNoRender();
		$id = $this->_request->getParam('id', '');
		if ($id != '') {
		   		 $model = new Model_Article_Article();
				$item = $model->getItemId($id);
				if ($item['image'] != '')
					unlink(realpath(ARTICLE_PATH . '/' . $item['image']));
				$model->delete('id = ' . $id);
		}
	}
	public function removetagAction ()
	{
		Zend_Layout::resetMvcInstance();
		$this->_helper->viewRenderer->setNoRender();
		$id = $this->_request->getParam('id', '');
		if ($id != '') {
			$model = new Model_TagArticle_TagArticle();
			$item = $model->getItemId($id);
			$model->delete('id = ' . $id);
		}
	}
	public function removeimgAction ()
	{
		Zend_Layout::resetMvcInstance();
		$this->_helper->viewRenderer->setNoRender();
		$id = $this->_request->getParam('id', '');
		if ($id != '') {
			$model = new Model_Article_Article();
			$item = $model->getItemId($id);
			//Kiểm tra xem user có upload ảnh không? Nếu có thì xóa file ảnh trên ổ cứng.
			if ($item['image'] != '') {
				unlink(realpath(ARTICLE_PATH . '/' . $item['image']));
				$model->update(array('image' => ''), 'id = ' . $id);
			}
		}
	}
	public function tagAction()
	{
	    $id = $this->_request->getParam('id','');
	    if($id=='')
	        $this->_redirect('/administrator/article');
	    $this->view->id = $id;
	    $model = new Model_TagArticle_TagArticle();
	    $data = $model->getItemsByArticle($id);
	    Zend_View_Helper_PaginationControl::setDefaultViewPartial(APPLICATION_PATH.'\modules\administrator\views\pagination.phtml');
	    $pa = Zend_Paginator::factory($data);
	    $pa->setItemCountPerPage(10);
	    $current = $this->_request->getParam('page');
	    $this->view->page = $current;
	    $pa->setCurrentPageNumber($current);
	    $this->view->data = $pa;
	}
	public function addtagAction()
	{
	    $id_article = $this->_request->getParam('id_artice','');
	    if($id_article == '')
	        $this->_redirect('/administrator/article');
	    $modelArticle = new Model_Article_Article();
	    $itemArticle = $modelArticle->getItemId($id_article);
	    if($this->_request->isPost())
	    {
	        $data = $this->_request->getParams();
	        $error = array();
	        //Lấy thông tin của form post
	        $data = $this->_request->getParams();
	        if ($data['name'] == '')
	        	$error['name'] = ' Tên tag không được rỗng';
	        if (count($error) > 0) {
	        	$this->view->error = $error;
	        	$this->view->data = $data;
	        }
	        else
	        {
	            $modelTag = new Model_Tag_Tag();
	            $modelTagArticle = new Model_TagArticle_TagArticle();
	            if(!$modelTag->checkName($data['name']))
	            {
	                $itemTag = array('name'=>$data['name']);
	                $idTag = $modelTag->insert($itemTag);
	            }
	            else
	            {
	                $itemTag = $modelTag->getItemByName($data['name']);
	                $idTag = $itemTag['id'];
	            }
	            $item = array('article'=>$id_article,'tag'=>$idTag);
	            $modelTagArticle->insert($item);
	            $this->_redirect('/administrator/article/tag/id/'.$id_article);
	        }
	    }
	    else
	    {
	        $data = array();
	        $data['article'] = $itemArticle['name'];
	        $data['name'] ='';
	        $this->view->data = $data;
	    }
	}
}